package com.example.demo.leetcode.zuocheng.graph;

/**
 *
 * 给定一串数字，他可以转换成多少种字符串
 * 比如 11111 可以转换成
 * 每个字符的编码级在(1-26之间)
 * @author xujm
 * @version V2.4
 * @since 2.4.0 2021/7/10 15:37
 */
public class Arr_从左往右模型1 {


    public static int process(int [] arr, int i ){

        if(i == arr.length){
            return 1;
        }
        //单个0无法转换成字符串
        if(arr[i] == 0){
            return 0;
        }
        //1 可以有两种组合, 下一层是i+1, 或者i+2
        int res = 0;
        if(arr[i] == 1){
            res += process(arr,i+1);
            if(i+2 <= arr.length){
                res += process(arr,i+2);
            }
            return res;
        }

        //2 可以有两种组合,下一层 i+1 或者 i+2(i+1在0-6范围内)
        if(arr[i] == 2){
            res += process(arr,i+1);
            if(i+1<arr.length && arr[i+1]>=0 && arr[i+1]<=6){
                res += process(arr,i+2);
            }
            return res;
        }
        //3----9 直接去下一层，进行单个遍历
        res += process(arr,i+1);
        return res;
    }

    public static void main(String[] args) {

        int [] arr = {1,1,1,1,1};
        int process = process(arr, 0);
        System.out.println(process);
    }



}
